﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using SegIdenMovilBT.Entidad;
using SegIdenMovilBT.DataAccess;
using System.Data;

namespace SegIdenMovilBT.Datos
{
    public class UsuarioDA
    {
        #region --- Constantes Usuario ---
        private const string CODUSUARIO = "CODUSUARIO";
        private const string NOMBRES = "NOMBRES";
        private const string APELLIDOS = "APELLIDOS";
        private const string NOMBRES_Y_APELLIDOS = "NOMBRESYAPELLIDOS";
        private const string NOMUSER = "NOMUSER";
        private const string PASSUSER = "PASSUSER";
        #endregion

        #region --- Metodos Propios ---
        public Usuario validarUsuario(Usuario usuario)
        {
            Usuario usuarioResultado = null;
            StringBuilder sentenciaSQL = null;

            sentenciaSQL = new StringBuilder();
            sentenciaSQL.Append("SELECT CODUSUARIO, NOMBRES, APELLIDOS, ");
            sentenciaSQL.Append("CONCAT(NOMBRES, ' ', APELLIDOS) AS NOMBRESYAPELLIDOS, ");
            sentenciaSQL.Append("NOMUSER, PASSUSER ");
            sentenciaSQL.Append("FROM usuario ");
            sentenciaSQL.Append("WHERE NOMUSER = '" + usuario.nomUser  + "' ");
            sentenciaSQL.Append("AND PASSUSER ='" + usuario.passUser + "'");

            // Carga de datos obtenido de la BD
            using (Database db = new Database())
            {
                db.TextoSQL = sentenciaSQL.ToString();

                IDataReader dr = db.obtenerDataReader();

                while (dr.Read())
                {
                    usuarioResultado = generarEntidadUsuario(dr);
                }
            }

            return usuarioResultado;
        }

        private Usuario generarEntidadUsuario(IDataReader dr)
        {
            Usuario usuarioObtenido = null;

            usuarioObtenido = new Usuario();
            usuarioObtenido.codUsuario = dr[CODUSUARIO].ToString();
            usuarioObtenido.nombres = dr[NOMBRES].ToString();
            usuarioObtenido.apellidos = dr[APELLIDOS].ToString();
            usuarioObtenido.nombresyApellidos = dr[NOMBRES_Y_APELLIDOS].ToString();
            usuarioObtenido.nomUser = dr[NOMUSER].ToString();
            usuarioObtenido.passUser = dr[PASSUSER].ToString();

            return usuarioObtenido;
        }
        #endregion
    }
}
